﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;           // ???????????????

namespace DALSadco
{
    public class DALTabela
    {
        // colunas da tabela
        private int _Id;
        private string _nome;
        private DateTime _dataNascimento;
        private string _telefone;

        // metodos de acesso aos dados
        public int Id {
          get { return _Id; }
          set { _Id = value; }
        }

        public string nome {
          get { return _nome; }
          set { _nome = value; }
        }

        public DateTime dataNascimento {
          get { return _dataNascimento; }
          set { _dataNascimento = value; }
        }

        public string telefone {
          get { return _telefone; }
          set { _telefone = value; }
        }
        
        // metodos auxiliares
        public void incluirTabela(DALTabela tabela)
        {
            SqlConnection cn = new SqlConnection();
            try
            {
                cn.ConnectionString = "lixo";
                // comando
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;

                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                // nome da StoredProcedure
                cmd.CommandText = "insere_tabela";
                
                // parametros da StoredProcedure
                
                // 1 - Id
                SqlParameter pId = new SqlParameter("@Id", SqlDbType.Int);
                pId.Direction = ParameterDirection.Output;
                cmd.Parameters.Add(pId);

                // 2 - nome
                SqlParameter pnome = new SqlParameter("@nome", SqlDbType.NVarChar, 50);
                pnome.Direction = ParameterDirection.Output;
                pnome.Value = tabela.nome;
                cmd.Parameters.Add(pnome);

                // 3 - dataNascimento
                SqlParameter pdataNascimento = new SqlParameter("@dataNascimento", SqlDbType.DateTime);
                pnome.Direction = ParameterDirection.Output;
                pdataNascimento.Value = tabela.dataNascimento;
                cmd.Parameters.Add(pdataNascimento);

                // 4 - telefone
                SqlParameter ptelefone = new SqlParameter("@telefone", SqlDbType.NVarChar, 10);
                pnome.Direction = ParameterDirection.Output;
                ptelefone.Value = tabela.telefone;
                cmd.Parameters.Add(ptelefone);

                // Abre a conexao com o banco e envia a query
                cn.Open();
                cmd.ExecuteNonQuery();

                tabela.Id = (Int32)cmd.Parameters["@Id"].Value;
            }
            catch (SqlException ex)
            {
                throw new Exception("SQL Server error: " + ex.Number);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally {
                cn.Close();
            }
        }
    }
}
